using System;
using System.Collections.Generic;
using System.Text;
using Facebook.Service.Core;
using FriendsNearby.Services.Entities;

namespace FriendsNearby.Services
{
    public interface IUsersService
    {
        void RegisterFacebookUser(string userId, string sessionKey);
        void UnregisterFacebookUser(string userId);

        UserPreference GetUserPreferences(string userId);
        void SetUserPreferences(UserPreference preferences);
		/// <summary>
		/// Gets the facebook user id from the given twitter 
		/// screen name, or null if it's not mapped.
		/// </summary>
		string GetFacebookUserIdFromTwitter(string screenName);

        /// <summary>
        /// Returns a string that can be used to uniquely identify a user within our system but has no meaning elsewhere.
        /// Reason to use this identifier is privacy.
        /// </summary>
        string GetInternalUserIDFromFacebookUserID(string facebookUserID);

        /// <summary>
        /// Returns a facebook userID based on a internal user id.
        /// </summary>
        string GetFacebookUserIDFromInternalUserID(string internalUserID);

        /// <summary>
        /// Makes sure that user is registered. if user was not registered or somehow doesnt exist
        /// in the db, the registry will be added ad-hoc.
        /// </summary>
        void EnsureUserRegistryExists(string userID, string sessionKey);
    }
}
